40.3.1 发现测试配置

如果熟悉Spring测试框架,你可能经常通过@ContextConfiguration(classes=…)指定加载哪些Spring @Configuration,也可能经常在测试类中使用内嵌@Configuration类。当测试Spring Boot应用时这些就不需要了,Spring Boot的@*Test注解会自动搜索主配置类,即使你没有显式定义它。

搜索算法是从包含测试类的package开始搜索,直到发现@SpringBootApplication@SpringBootConfiguration注解的类,只要按恰当的方式组织代码,通常都会发现主配置类。

如果想自定义主配置类,你可以使用一个内嵌的@TestConfiguration类。不像内嵌的@Configuration类(会替换应用主配置类),内嵌的@TestConfiguration类是可以跟应用主配置类一块使用的。

Spring测试框架在测试过程中会缓存应用上下文,因此,只要你的测试共享相同的配置(不管是怎么发现的),加载上下文的潜在时间消耗都只会发生一次。